// 模块导入
import UsersService from '../../services/users.service';
import { Request, Response } from 'express';
import jsonwebtoken from 'jsonwebtoken';
// token加密所使用的秘钥
const tokenKey = 'qwer1234'
// 定义控制器类
export class Controller {
  // 登录方法
  login(req: Request, res: Response): void {
    // 获取客户端请求携带的用户名和密码
    let username = req.body.username;
    let password = req.body.password;
    // 验证数据是否为空
    if (username && password) {
        // 调用服务类进行登录操作
        UsersService.login(username, password).then(data => {
            // 登录成功后，生成token，和用户信息一起返回给客户端
            let token = jsonwebtoken.sign({
                role: data.role,
                id: data.id
            }, tokenKey, {
                expiresIn: 3600 * 24 * 7
            })
            res.json({
                msg: 'ok',
                info: data,
                token: token
            })
        }).catch(error => {
            res.json({
                error: error,
                msg: 'error'
            })
        })
    } else {
        res.json({
            error: '请输入正确的用户名和密码',
            msg: 'error'
        })
    }
  }
  // 注册方法
  singUp(req: Request, res: Response): void {
    // 获取注册时的用户信息
    let username = req.body.username;
    let password = req.body.password;
    let role = req.body.role;
    // 对信息有效性进行简单验证
    if (username && password && role && (role == 'admin' || role == 'normal')) {
        // 进行注册动作
        UsersService.signUp(username, password, role).then(()=>{
            res.json({
                msg: 'ok'
            })
        }).catch(error => {
            res.json({
                error: error,
                msg: 'error'
            })
        })
    } else {
        res.json({
            error: '请输入正确的用户信息',
            msg: 'error'
        })
    }
  }
}
// 导出控制器类
export default new Controller();
